/**
 * 
 */
package com.ms.service.module.zone.command;

import com.xpec.c4.game.login.command.FakeLoginCommand;
import com.xpec.c4.game.utility.GameUtility;
import com.xpec.c4.message.MessageTypes;
import com.xpec.c4.service.message.MessageAction;

/**
 * 轉發測試命令到另一個 zone
 * <p>
 * 單純使用這個命令轉發到指定的 zone 還是無法執行, 因為 zone 上面並沒有自己的角色資料, 可以搭配
 * {@link FakeLoginCommand} 在 zone 上建立自己的角色資料, 之後就可以轉發命令過去, 像自己在那個 zone 上一樣執行.
 * 
 * @author TW15010
 */
public class FwdCmdCommand extends BasicDebugCommand {
	/**
	 * 測試的 code 可以寫在這裡
	 */
	@Override
	public String execute() {
		// 目的 zone id
		String dstZoneeId = getParam(1);
		if (!GameUtility.isHaveString(dstZoneeId)) {
			return getDescription();
		}

		// 取出要轉發的命令
		String fwdCommands = "";
		String[] commandParts = getCommandValue();
		int imax = commandParts.length;
		for (int i = 2; i < imax; i++) {
			fwdCommands += (commandParts[i] + " ");
		}

		if (!GameUtility.isHaveString(fwdCommands)) {
			return getDescription();
		}

		// 轉發
		MessageAction.sendFakeClientMessage(player, dstZoneeId, MessageTypes.C_ZONE_DEBUG_COMMAND_REQUEST,
				fwdCommands);

		return "ok";
	}

	@Override
	public String getName() {
		return "fwdcmd";
	}

	@Override
	public String getDescription() {
		return getName() + " [dst zone id] [command .....]";
	}

	@Override
	public String getShortDescription() {
		return "forward command to other zone.";
	}
}
